﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Text;
using System.Security.Cryptography;

namespace BankingService
{
    /// <summary>
    /// Summary description for Service1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class ServiceForWebUser : System.Web.Services.WebService
    {
        private DongABankDataContext context = new DongABankDataContext();

        //-----------------------CHUYỂN KHOẢN THẺ THANH TOÁN QUỐC TẾ-------------------------------
        [WebMethod]
        public String Authenticate(String username, String password)
        {
            return new WebUserAuthentication().Authenticate(username, password);
        }

        [WebMethod]
        public String TransportGoods(String sid, String TKChuyenTien, string MaNganHangChuyen, String TKNhanTien, String MaNganHangNhan, float SoTienChuyen, String MaTienTe)
        {
            //Kiểm tra SID còn hợp lệ để giao dịch hay không?
            if (!MyUtility.KiemTraSIDKhachHang(sid))
                return "6";
            //Kiểm tra xem mã Ngân hàng chuyển và mã Ngân hàng nhận có cùng liên minh hay không?
            if (!MyUtility.ThuocLienMinhNganHang(MaNganHangChuyen) || !MyUtility.ThuocLienMinhNganHang(MaNganHangNhan))
                return "5";

            //Nếu tài khoản chuyển tiền thuộc Đông Á Bank
            if (MaNganHangChuyen.Equals("DAB"))
            {
                //Kiểm tra xem TKChuyenTien có tồn tại hay không?
                if (!MyUtility.KiemTraTheThanhToanQuocTe(TKChuyenTien))
                    return "3";

                var all_TKTD = from row in context.TaiKhoanTinDungs where row.MaThe.Equals(TKChuyenTien) select row;
                String maTaiKhoanNganHangDAB = "";
                foreach (TaiKhoanTinDung i in all_TKTD)
                    maTaiKhoanNganHangDAB = i.MaTKNH;//Lấy ra mã Tai khoản ngân hàng mà thẻ tín dụng đăng kí

                var all_TKNH = from row in context.TaiKhoanNganHangs where row.MaTaiKhoan.Equals(maTaiKhoanNganHangDAB) select row;
                foreach (TaiKhoanNganHang i in all_TKNH)
                {
                    if (i.SoDu < (decimal)SoTienChuyen)
                        return "2";
                    i.SoDu -= (decimal)SoTienChuyen;
                    try
                    {
                        context.SubmitChanges();
                    }
                    catch (Exception ex) 
                    { 
                        Console.WriteLine(ex.ToString()); 
                        return "6"; 
                    }
                }
            }
            else
            {
                //Gọi WebService phía bên kia cung cấp
            }
            //Nếu tài khoản nhận tiền thuộc Đông Á Bank
            if (MaNganHangNhan.Equals("DAB"))
            {
                //Kiểm tra xem TKNhanTien có tồn tại hay không?
                if (!MyUtility.KiemTraTheThanhToanQuocTe(TKNhanTien))
                    return "4";

                var all_TKTD = from row in context.TaiKhoanTinDungs where row.MaThe.Equals(TKNhanTien) select row;
                String maTaiKhoanNganHangDAB = "";
                foreach (TaiKhoanTinDung i in all_TKTD)
                    maTaiKhoanNganHangDAB = i.MaTKNH;//Lấy ra mã Tai khoản ngân hàng mà thẻ tín dụng đăng kí

                var all_TKNH = from row in context.TaiKhoanNganHangs where row.MaTaiKhoan.Equals(maTaiKhoanNganHangDAB) select row;
                foreach (TaiKhoanNganHang i in all_TKNH)
                {
                    i.SoDu += (decimal)SoTienChuyen;
                    try
                    {
                        context.SubmitChanges();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.ToString());
                        return "6";
                    }
                }
            }
            else
            {
                //Gọi WebService phía bên kia cung cấp
            }

            //Hủy SID sau 1 lần giao dịch thành công
            MyUtility.HuySIDKhachHang(sid);

            //Lưu lịch sử giao dịch

            return "1";
        }
    }
}
